+++ /dev/null
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Microsoft.Xna.Framework.Input;
-
-namespace SuperPolarity
-{
- static class InputController
- {
- static Dictionary<string, List<Action<float>>> Listeners;
- static Dictionary<string, List<Keys>> RegisteredKeys;
- static Dictionary<string, List<Buttons>> RegisteredButtons;
-
- static GamePadState InputGamePadState;
- static KeyboardState InputKeyboardState;
-
- /*
- * Registered Events.
- *
- * You register: name of the event (ie. attack) and a key associated with it.
- * or button... Left Stick /always/ dispatches move event.
- */
-
- static InputController()
- {
- Listeners = new Dictionary<string,List<Action<float>>>();
- InputKeyboardState = new KeyboardState();
- InputGamePadState = new GamePadState();
- }
-
- public static void UpdateInput()
- {
- Poll();
- DispatchMoveEvents();
- DispatchRegisteredEvents();
- }
-
- private static void Poll()
- {
- InputGamePadState = GamePad.GetState(Microsoft.Xna.Framework.PlayerIndex.One);
- InputKeyboardState = Keyboard.GetState();
- }
-
- private static void DispatchRegisteredEvents()
- {
- }
-
- private static void DispatchMoveEvents()
- {
- float xMovement = 0.0f;
- float yMovement = 0.0f;
- // Dispatch the moveX / MoveY events every frame.
-
- xMovement = InputGamePadState.ThumbSticks.Left.X;
- yMovement = -InputGamePadState.ThumbSticks.Left.Y;
-
- Console.WriteLine("Dispatching Input {0}", InputKeyboardState.IsKeyDown(Keys.Left));
-
- if (InputKeyboardState.IsKeyDown(Keys.Left))
- {
- xMovement = -1.0f;
- }
-
- if (InputKeyboardState.IsKeyDown(Keys.Right))
- {
- xMovement = 1.0f;
- }
-
- if (InputKeyboardState.IsKeyDown(Keys.Up))
- {
- yMovement = -1.0f;
- }
-
- if (InputKeyboardState.IsKeyDown(Keys.Down))
- {
- yMovement = 1.0f;
- }
-
- Dispatch("moveX", xMovement);
- Dispatch("moveY", yMovement);
- }
-
- public static void Bind(string eventName, Action<float> listener)
- {
- List<Action<float>> newListenerList;
- List<Action<float>> listenerList;
- bool foundListeners;
-
- if (!Listeners.ContainsKey(eventName)) {
- newListenerList = new List<Action<float>>();
- Listeners.Add(eventName, newListenerList);
- }
-
- foundListeners = Listeners.TryGetValue(eventName, out listenerList);
-
- listenerList.Add(listener);
- }
-
- public static void Dispatch(string eventName, float value)
- {
- List<Action<float>> listenerList;
- bool foundListeners;
-
- foundListeners = Listeners.TryGetValue(eventName, out listenerList);
-
- if (!foundListeners)
- {
- return;
- }
-
- foreach (Action<float> method in listenerList)
- {
- method(value);
- }
- }
- }
-}